home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: Alpha / Whiteline Alpha.iso / tex / tools / umrand / umrand.sty < prev    next >
Encoding:
Text File  |  1994-09-22  |  5.3 KB  |  175 lines

  1. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  2.  
  3. % The TeX-macros of the border-project %
  4.  
  5. % This file has version number 1.2a.   %
  6.  
  7. % 16.07.1993                           %
  8.  
  9. % (c) by Andreas Schrell, Wuppertal    %
  10.  
  11. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  12.  
  13.  
  14.  
  15. % Achtung: für |\LinienBox| funktioniert sowohl der Befehl
  16.  
  17. % |font {\UB}| mit (z.B.) |\font\UB=umrandb at 20.74pt| als auch
  18.  
  19. % |font {\usefont{U}{randb}{m}{n}\normalsize}|.
  20.  
  21. % Bei niedriger Bilschirmauflösung (z.B. 96x96) werden gerade Striche
  22.  
  23. % manchmal nicht angezeigt!
  24.  
  25.  
  26.  
  27. \newskip\Randsep
  28.  
  29. \Randsep=3pt
  30.  
  31.  
  32.  
  33. \newif\ifnotempty
  34.  
  35. \def\ifne#1{\def\ifnetest{#1}\ifx\empty\ifnetest\notemptyfalse\else
  36.  
  37.     \notemptytrue\fi\ifnotempty}
  38.  
  39.  
  40.  
  41. \def\hScanDef #1 #2 #3 (#4[#5]#6) {%
  42.  
  43.     \setbox#1\hbox{\SEP#4\ifne{#4}\SEP\fi}%
  44.  
  45.     \setbox#2\hbox{#5\SEP}%
  46.  
  47.     \ifdim\wd#2>0pt\else
  48.  
  49.         \errhelp{If you proceed now, you will enter an infinite loop...}%
  50.  
  51.         \errmessage{A sequence [#5] given to \string\RandBox\space
  52.  
  53.                     has a width <= 0pt (\the\wd#2). 
  54.  
  55.                     Type x or e!}%
  56.  
  57.     \fi
  58.  
  59.     \setbox#3\hbox{#6\ifne{#6}\SEP\fi}%
  60.  
  61.     \MyNext}
  62.  
  63.  
  64.  
  65. \def\vScanDef #1 #2 #3 (#4[#5]#6) {%
  66.  
  67.     \setbox#1\hbox{\vbox{\halign{##\cr#4\cr}\ifne{#4}\SEP\fi}}%
  68.  
  69.     \setbox#2\hbox{\vbox{\halign{##\cr#5\cr}\SEP}}%
  70.  
  71.     \ifdim\ht#2>0pt\else
  72.  
  73.         \ifdim\dp#2>0pt\else
  74.  
  75.         \errhelp{If you proceed now, you will enter an infinite loop...}%
  76.  
  77.         \errmessage{A sequence [#5] given to \string\RandBox\space
  78.  
  79.                     has a height/depth <= 0pt (\the\ht#2.\the\dp#2). 
  80.  
  81.                     Type x or e!}%
  82.  
  83.     \fi\fi
  84.  
  85.     \setbox#3\hbox{\vbox{%
  86.  
  87.         \halign{##\cr#6\cr}\ifne{#6}\SEP\fi}}%
  88.  
  89.     \MyNext}
  90.  
  91.     
  92.  
  93. \def\RandBox #1 font #2 [#3] (#4) {\leavevmode\hbox\bgroup
  94.  
  95.     \ifdim#3<0pt
  96.  
  97.       \def\K{{#2\kern-#3\kern\Randsep\relax}}%
  98.  
  99.     \else
  100.  
  101.       \def\K{{#2\kern\Randsep\relax}}%
  102.  
  103.     \fi
  104.  
  105.     \setbox20\hbox{\vbox{\K\hbox{\K{#1}\K}\K}}%
  106.  
  107.     \topskip=0pt
  108.  
  109.     \offinterlineskip
  110.  
  111.     #2%
  112.  
  113.     \def\ISEP{#3}%
  114.  
  115.     \def\SEP{\kern\ISEP}%
  116.  
  117.     \setbox0\hbox{#4}%
  118.  
  119.     \let\MyNext\RBA
  120.  
  121.     \def\\{\SEP}%
  122.  
  123.     \hScanDef 4 5 6 }
  124.  
  125. \def\RBA (#1) {\setbox7\hbox{#1}%
  126.  
  127.     \let\MyNext\RBB
  128.  
  129.     \def\\{\cr\noalign{\SEP}}%
  130.  
  131.     \vScanDef 8 9 10 }
  132.  
  133. \def\RBB {%
  134.  
  135.     \let\MyNext\RBC
  136.  
  137.     \def\\{\cr\noalign{\vskip\ISEP}}%
  138.  
  139.     \vScanDef 11 12 13 }
  140.  
  141. \def\RBC (#1) {\setbox14\hbox{#1}%
  142.  
  143.     \let\MyNext\RBD
  144.  
  145.     \def\\{\SEP}%
  146.  
  147.     \hScanDef 15 16 17 }
  148.  
  149. \def\RBD (#1){\setbox18\hbox{#1}%
  150.  
  151.     % 4 5 6
  152.  
  153.     \dimen0=\wd20
  154.  
  155.     \advance\dimen0 by -\wd6
  156.  
  157.     \setbox21\hbox{\unhbox4}%
  158.  
  159.     \def\done{0}%
  160.  
  161.     \loop
  162.  
  163.         \ifdim\wd21<\dimen0
  164.  
  165.         \setbox21\hbox{\unhbox21\copy5}%
  166.  
  167.         \def\done{1}%
  168.  
  169.     \repeat
  170.  
  171.     \setbox21\hbox{\unhbox21%\if\done0\kern-\ISEP\fi
  172.  
  173.                     \copy6}%
  174.  
  175.     % 15 16 17
  176.  
  177.     \dimen0=\wd20
  178.  
  179.     \advance\dimen0 by -\wd17
  180.  
  181.     \setbox22\hbox{\unhbox15}%
  182.  
  183.     \def\done{0}%
  184.  
  185.     \loop
  186.  
  187.         \ifdim\wd22<\dimen0
  188.  
  189.         \setbox22\hbox{\unhbox22\copy16}%
  190.  
  191.         \def\done{1}%
  192.  
  193.     \repeat
  194.  
  195.     \setbox22\hbox{\unhbox22%\if\done0\kern-\ISEP\fi
  196.  
  197.                     \copy17}%
  198.  
  199.     % 8 9 10
  200.  
  201.     \dimen0=\ht20 \advance\dimen0 by \dp20
  202.  
  203.     \advance\dimen0 by -\ht10
  204.  
  205.     \advance\dimen0 by -\dp10
  206.  
  207.     \setbox23\vbox{\copy8}%
  208.  
  209.     \def\done{0}%
  210.  
  211.     \loop
  212.  
  213.         \dimen1\ht23 \advance\dimen1 by \dp23
  214.  
  215.         \ifdim\dimen1<\dimen0
  216.  
  217.         \setbox23\vbox{\unvbox23\copy9}%
  218.  
  219.         \def\done{1}%
  220.  
  221.     \repeat
  222.  
  223.     \setbox23\vbox{\unvbox23%\if\done0\kern-\ISEP\fi
  224.  
  225.                     \copy10}%
  226.  
  227.     % 11 12 13
  228.  
  229.     \dimen0=\ht20 \advance\dimen0 by \dp20
  230.  
  231.     \advance\dimen0 by -\ht13
  232.  
  233.     \advance\dimen0 by -\dp13
  234.  
  235.     \setbox24\vbox{\copy11}%
  236.  
  237.     \def\done{0}%
  238.  
  239.     \loop
  240.  
  241.         \dimen1\ht24 \advance\dimen1 by \dp24
  242.  
  243.         \ifdim\dimen1<\dimen0
  244.  
  245.         \setbox24\vbox{\unvbox24\copy12}%
  246.  
  247.         \def\done{1}%
  248.  
  249.     \repeat
  250.  
  251.     \setbox24\vbox{\unvbox24%\if\done0\kern-\ISEP\fi
  252.  
  253.                     \copy13}%
  254.  
  255.     %
  256.  
  257.     \dimen0=\ht23 \advance\dimen0 by \dp23
  258.  
  259.     \advance\dimen0 by \ISEP
  260.  
  261.     \dimen1=\wd21
  262.  
  263.     \advance\dimen1 by \ISEP
  264.  
  265.     \hbox{$\vcenter{\copy0\SEP\copy23\copy14}%
  266.  
  267.           \vcenter{\copy21
  268.  
  269.                 \hbox to \wd21{\hss
  270.  
  271.                     \vbox to \dimen0{\vss\copy20\vss}%
  272.  
  273.                 \hss}%
  274.  
  275.                 \copy22}%
  276.  
  277.           \vcenter{\copy7\SEP\copy24\copy18}$}\egroup}
  278.  
  279.         
  280.  
  281. \def\EinfachRand #1 font #2 char #3 [#4] {%
  282.  
  283.     \RandBox {#1} font {#2} [#4]
  284.  
  285.              (#3) ([#3]) (#3)
  286.  
  287.              ([#3]) ([#3])
  288.  
  289.              (#3) ([#3]) (#3) }
  290.  
  291.              
  292.  
  293. \def\countpluseins#1#2{\count#1=\count#2
  294.  
  295.     \advance\count#1 by 1}
  296.  
  297. \def\LinienBox #1 font #2 ecken #3 linien #4 {
  298.  
  299.     {\count100='#3 \count200='#4 % oktal!!!
  300.  
  301.      \countpluseins{101}{100}
  302.  
  303.      \countpluseins{102}{101}
  304.  
  305.      \countpluseins{103}{102}
  306.  
  307.      \countpluseins{201}{200}
  308.  
  309.      \countpluseins{202}{201}
  310.  
  311.      \countpluseins{203}{202}
  312.  
  313.      \def\e##1{\char\the\count10##1}
  314.  
  315.      \def\l##1{\char\the\count20##1}
  316.  
  317.      \RandBox {#1} font {#2} [0pt]
  318.  
  319.          (\e1) ([\l1]) (\e0)
  320.  
  321.          ([\l2]) ([\l0])
  322.  
  323.          (\e2) ([\l3]) (\e3) }}
  324.  
  325.  
  326.  
  327. \def\C{\char'}
  328.  
  329.  
  330.  
  331. \def\MeanderBox #1 at #2 {%
  332.  
  333.     {\font\MeanderFont=umranda at #2
  334.  
  335.     \RandBox {#1} font {\MeanderFont} [0pt]
  336.  
  337.          (\C136) ([\C137]) (\C140)
  338.  
  339.          ([\C145])         ([\C141])
  340.  
  341.          (\C144) ([\C143]) (\C142) }}
  342.  
  343.  
  344.  
  345.  
  346.  
  347. \endinput
  348.  
  349.